﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EntitiesLayer;
using DAL;
using Exceptions;

namespace BLL
{
    public class Gestor
    {

        private UnitOfWork UoW = new UnitOfWork();

        #region listarEjercicios
        public IEnumerable<Ejercicio> listarEjercicios()
        {
            return UoW.EjercicioRepository.GetAll();
        }
        #endregion listarEjercicios

        #region listarMusculos
        public IEnumerable<Musculo> listaMusculos()
        {
            return UoW.MusculoRepository.GetAll();
        }
        #endregion listarMusculos

        #region agregarEjercicio
        public void agregarEjercicio(String pnombreComun, String pnombreOpcional, String pcodigo, String pimagenInicial, String pimagenFinal, String pnombreMusculoPrincipal, List<Musculo> plistaMusculos, String perroresComunes, String pindicacionesGenerales)
        {
            try
            {
                Ejercicio objEjercicio = new Ejercicio(pnombreComun, pnombreOpcional, pcodigo, pimagenInicial, pimagenFinal, pnombreMusculoPrincipal, plistaMusculos, perroresComunes, pindicacionesGenerales);
                if (objEjercicio.IsValid)
                {
                    UoW.EjercicioRepository.Insert(objEjercicio);
                    UoW.EjercicioRepository.Save();
                }
                else
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (RuleViolation rv in objEjercicio.GetRuleViolations())
                    {
                        sb.AppendLine(rv.ErrorMessage);
                    }
                    throw new BusinessLogicException(sb.ToString());
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        #endregion


        #region filtrarLista

        public IEnumerable<Ejercicio> filtrarLista(String ptextoAfiltrar)
        {
            return UoW.EjercicioRepository.FiltrarListaEjercicios(ptextoAfiltrar);
        }

        #endregion filtrarLista

    }
}
